package com.chenyue.cm.account.service;

import com.chenyue.cm.account.domain.JdAccount;
import com.chenyue.cm.account.domain.JdAccountRecord;
import com.chenyue.cm.account.domain.JdIntegralRecord;
import com.chenyue.cm.base.service.BaseServiceIface;
import com.chenyue.cm.user.domain.JdAppUser;

import java.util.List;

/**
 * @author LBX
 * @date JdAccount
 */
public interface JdAccountService extends BaseServiceIface<JdAccount> {

    /**
     * 定时任务用
     */
    void autoMaticAccount();




    /**
     * 账户余额--new
     */
    JdAccount getAccount(int userId);


    Double withDrawal(int id);


    /**
     * 创建账户
     *
     * @param userId 用户id
     * @return JdAccount
     */
    JdAccount createAccount(int userId);

    /**
     * 查询用户余额
     *
     * @param id 用户id
     * @return 金币余额
     */
    JdAccount getAmount(Integer id);

    /**
     * 查询用户积分余额
     *
     * @param id 用户id
     * @return 金币余额
     */
    JdAccount getIntergnal(Integer id);

    /**
     * 账户变动-充值
     *
     * @param userId  用户id
     * @param amount  充值金额
     * @param source  变动来源
     * @param orderId 订单编号
     * @return 错误信息
     */
    String recharge(Integer userId, double amount, int source, Integer orderId);

    /**
     * 账户变动-消费
     *
     * @param userId  账户id
     * @param amount  消费金额
     * @param source  变动来源
     * @param orderId 订单号
     * @return 错误信息
     */
    String costume(Integer userId, double amount, int source, Integer orderId);

    /**
     * 获取可提现金额
     *
     * @param id 用户id
     * @return 金额
     */
    Double getWithdrawAbleAmount(Integer id);

    String integralRecharge(Integer userId,int  integral, int source,String orderId,String remark);

    String integralCostume(Integer userId, int  integral, int source, String orderId);


    List<JdIntegralRecord> selectByType(JdAppUser user, Integer type);
}
